package cn.b.sky.mes.cm.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.MateriaProcessAssign;
import cn.b.sky.mes.cm.model.Material;
import cn.b.sky.mes.cm.model.condition.MaterialCondition;

/**
 * 
 * <strong>Title : MaterialDao.java<br></strong>
 * <strong>Package : cn.b.sky.mes.cm.dao<br></strong>
 * <strong>Description : </strong>物料主数据数据操作接口<br> 
 * <strong>Create on : 2015-9-29 下午02:31:55<br></strong>
 * <p>
 * @author zhaoxin01<br>
 * @version <strong>v1.0.0</strong><br>
 * <br>
 * <strong>修改历史:</strong><br>
 * 修改人 | 修改日期 | 修改描述<br>
 * -------------------------------------------<br>
 * <br>
 * <br>
 */
public interface MaterialDao {
  /**
   * 
   * <strong>Title : selectMaterialList<br></strong>
   * <strong>Description : </strong>查询物料主数据列表<br> 
   * <strong>Create on : 2015-9-30 上午11:16:47<br></strong>
   * <p>
   * @param materialCondition
   * @return
   * List<Material>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Material> selectMaterialList(MaterialCondition materialCondition);

  /**
   * 
   * <strong>Title : selectMaterialListCount<br></strong>
   * <strong>Description : </strong>查询物料主数据条数<br> 
   * <strong>Create on : 2015-9-30 上午11:17:11<br></strong>
   * <p>
   * @param materialCondition
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int selectMaterialListCount(MaterialCondition materialCondition);

  /**
   * 
   * <strong>Title : selectMaterial<br></strong>
   * <strong>Description : </strong>根据编码查询物料<br> 
   * <strong>Create on : 2015-9-30 上午11:17:29<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * Material
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  Material selectMaterial(@Param("siteCode") String siteCode, @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : selectProcessByMaterial<br></strong>
   * <strong>Description : </strong>查询物料对应的工艺列表<br> 
   * <strong>Create on : 2015-9-30 上午11:17:53<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * List<MateriaProcessAssign>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MateriaProcessAssign> selectProcessByMaterial(@Param("siteCode") String siteCode,
      @Param("materialCode") String materialCode, @Param("currentTime") Date currentTime);

  /**
   * 
   * <strong>Title : insertMaterial<br></strong>
   * <strong>Description : </strong>新增物料<br> 
   * <strong>Create on : 2015-9-30 上午11:18:11<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertMaterial(Material material);

  /**
   * 
   * <strong>Title : insertMateriaProcessAssign<br></strong>
   * <strong>Description : </strong>新增物料工艺对应关系<br> 
   * <strong>Create on : 2015-9-30 上午11:18:21<br></strong>
   * <p>
   * @param materiaProcessAssign
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertMateriaProcessAssign(MateriaProcessAssign materiaProcessAssign);

  /**
   * 
   * <strong>Title : deleteMateriaProcessAssign<br></strong>
   * <strong>Description : </strong>删除物料工艺对应关系<br> 
   * <strong>Create on : 2015-9-30 上午11:18:37<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteMateriaProcessAssign(@Param("siteCode") String siteCode, @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : updateMaterial<br></strong>
   * <strong>Description : </strong>更新物料主数据<br> 
   * <strong>Create on : 2015-9-30 上午11:18:55<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updateMaterial(Material material);

  /**
   * 
   * <strong>Title : deleteMaterial<br></strong>
   * <strong>Description : </strong>@方法注释说明写在此处@<br> 
   * <strong>Create on : 2015-9-30 下午01:24:24<br></strong>
   * <p>
   * @param material
   * void
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void deleteMaterial(@Param("siteCode") String siteCode, @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : slelectMaterialUserdByProcess<br></strong>
   * <strong>Description : </strong>查询物料是否被工艺使用<br> 
   * <strong>Create on : 2015-10-6 下午04:29:21<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int slelectMaterialUserdByProcess(@Param("siteCode") String siteCode, @Param("materialCode") String materialCode);

  /**
   * 
   * <strong>Title : slelectMaterialIsInProcess<br></strong>
   * <strong>Description : </strong>查询物料是否已经是工艺的组件<br> 
   * <strong>Create on : 2015-10-6 下午06:52:45<br></strong>
   * <p>
   * @param materiaProcessAssign
   * @return
   * int
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int slelectMaterialIsInProcess(MateriaProcessAssign materiaProcessAssign);

  /**
   * 
   * <strong>Title : selectLastProcessByMaterial<br></strong>
   * <strong>Description : </strong>查询最新版本的工艺<br> 
   * <strong>Create on : 2015-12-10 上午10:31:13<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @param currentTime 当前时间字符串
   * @return
   * List<MateriaProcessAssign>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<MateriaProcessAssign> selectLastProcessByMaterial(@Param("siteCode") String siteCode,
      @Param("materialCode") String materialCode, @Param("currentTime") String currentTime);

  /**
   * 
   * <strong>Title : selectMaterialSuggests<br></strong>
   * <strong>Description : </strong>物料类型搜索建议<br> 
   * <strong>Create on : 2016年4月11日 下午7:35:01<br></strong>
   * <p>
   * @param material
   * @return
   * List<Material>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<Material> selectMaterialSuggests(MaterialCondition material);
}
